{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "ce4e0170",
   "metadata": {},
   "source": [
    "# 机器读心术之文本挖掘与自然语言处理第9课书面作业\n",
    "学号：207402  \n",
    "\n",
    "**作业内容：**  \n",
    "1. 按自己的理解解释一下在命名实体识别中，为什么对人名识别的效果一般要比识别组织机构名更好？\n",
    "2. 阅读宗成庆书第166-168页，关于王挺对词性标注的HMM方法（贾里尼克方法）的改进，用通俗和方便理解的语言解释第167页倒数第2段“在此基础上...”到底讲了什么？"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "077a7c03",
   "metadata": {},
   "source": [
    "## 第1题\n",
    "按自己的理解解释一下在命名实体识别中，为什么对人名识别的效果一般要比识别组织机构名更好？  "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "454fc919",
   "metadata": {},
   "source": [
    "**答：**  \n",
    "我的理解是，人名相比组织机构名而言，其规律更强，体现在具体方法上，比如用CRF作为识别模型，就是用来描述人名的特征函数能够描述的更准确，以中文人名为例，人名一般就是2\\~4个字，一个姓通常1\\~2个字，名通常1\\~2个字，而姓的取字通常也就集中在200个汉字内，这种规律性是比较容易用特征函数描述出来的，而组织机构名称显然没有这么强的规律性，难以描述准确。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9c6bb7f6",
   "metadata": {},
   "source": [
    "## 第2题\n",
    "阅读宗成庆书第166-168页，关于王挺对词性标注的HMM方法（贾里尼克方法）的改进，用通俗和方便理解的语言解释第167页倒数第2段“在此基础上...”到底讲了什么？"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f7e96e57",
   "metadata": {},
   "source": [
    "**答：**  \n",
    "这里讲的是这么回事：基于语料用HMM方法来训练得到模型，而语料后续是会更新的，如何用一个好的方法，可以做到增量叠加式的根据新语料得到新模型，而不需要从头训练。\n",
    "\n",
    "假设刚开始有语料$C_1$, 得到模型$\\mu_1=(A_1,B_1,\\pi_1)$。\n",
    "\n",
    "又有新语料$C_2$, 最笨的方法是：将语料$C_1,C_2$合并为语料$C^*$，再用Jelinek的方法从头训练一套模型$\\mu_2=(A_2,B_2,\\pi_2)$，这个训练出来的模型可以同时$C_1,C_2$的信息。\n",
    "\n",
    "而王挺的方法是增量叠加式的，前期的训练计算结果没有浪费。  \n",
    "刚开始从语料$C_1$开始，训练模型$\\mu_1$时，就保存计算过程的中间值，就是各种状态、观察值、转换的期望值（书中7-44式描述的公式）。等到有新语料$C_2$到来时，可以用$\\mu_1$的模型作为新训练开始的初始值，然后只基于语料$C_2$，用同样的训练方法，可以得到本次训练的各种状态、观察、转换的期望值，这此期望值与计算$\\mu_1$时保存的期望值相加，就得到了基于语料$C_1+C_2$的期望值计算结果，再利用书中公式（7-46）(7-47)(7-48)很容易就计算得到新模型参数：$\\mu_2=(A_2,B_2,\\pi_2)$"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
